#pragma once

namespace jvm {
namespace heap {

class AccessFlags {
public:
    static const uint16_t ACC_PUBLIC       = 0x0001; // class field method
    static const uint16_t ACC_PRIVATE      = 0x0002; //       field method
    static const uint16_t ACC_PROTECTED    = 0x0004; //       field method
    static const uint16_t ACC_STATIC       = 0x0008; //       field method
    static const uint16_t ACC_FINAL        = 0x0010; // class field method
    static const uint16_t ACC_SUPER        = 0x0020; // class
    static const uint16_t ACC_SYNCHRONIZED = 0x0020; //             method
    static const uint16_t ACC_VOLATILE     = 0x0040; //       field
    static const uint16_t ACC_BRIDGE       = 0x0040; //             method
    static const uint16_t ACC_TRANSIENT    = 0x0080; //       field
    static const uint16_t ACC_VARARGS      = 0x0080; //             method
    static const uint16_t ACC_NATIVE       = 0x0100; //             method
    static const uint16_t ACC_INTERFACE    = 0x0200; // class
    static const uint16_t ACC_ABSTRACT     = 0x0400; // class       method
    static const uint16_t ACC_STRICT       = 0x0800; //             method
    static const uint16_t ACC_SYNTHETIC    = 0x1000; // class field method
    static const uint16_t ACC_ANNOTATION   = 0x2000; // class
    static const uint16_t ACC_ENUM         = 0x4000; // class field
};

} // namespace heap
} // namespace jvm
